Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Animation Record UI #341

Merged
merged 54 commits into from
Mar 17, 2024
Merged

Add Animation Record UI #341

merged 54 commits into from
Mar 17, 2024

Conversation

Flova
Copy link
Member

@Flova Flova commented Feb 7, 2024

Changes

  • Ports the old record animation rqt tool from ROS1 to ROS2
  • Heavily rewrite the animation record GUI, fixing bugs and cleaning / simplifying the code
  • Redo the handling of animations in the HCM. Non HCM animations need to call a service to enter the HCM animation state, instead of sending a specially formatted message on the animation joint state topic. This simplifies rejections of requests, the joint mutex itself, as well as the animation joint command message.
  • Also redo the handling of the recording mode in the HCM. It is activated via a service if the recording GUI plays an animation and prohibits falling reactions etc.. It is deactivated once the GUI is closed.
  • Dynamic update/addition of animations during runtime. This allows for a way less hacky way of playing work in progress animations from the GUI. Previously they were copied via ssh onto the ROS master uri host, guessing the folder structure. Not it is realized via a ROS service that accepts a json serialized animation. The service is used because a client might want to wait for the animation to be added before it is executed and a service can be blocking.
  • Add the ability to partially play animations for debugging purposes (mainly used by the GUI to step through the frames manually). This allows for more accurate debugging as the debugged animation is played using the animation server and not a different animation runtime inside the GUI which handles certain scenarios different and is overall code duplication.
  • Fix misuse of the interactive shell command exit(), which resulted in freezes. sys.exit() or proper exceptions are used instead.
  • Addition of a robot binding script. It sets all the environment variables to enable seamless ROS communication with a robot given the robot's name. It also restarts the local ros2 daemon, which is a typical source of errors when switching domain IDs.
  • Start head mover with motion instead of behavior. This makes semantically more sense and it is also cleaner dependency wise. (Closes Start headmover with default headmode #345 )
  • Fix uninitialized memory error in head mover
  • Renaming some minor things
  • Fix head mover death (closes Head mover dies #359)

@Flova Flova requested review from jaagut and timonegk March 14, 2024 02:20
Copy link
Member

@timonegk timonegk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apart from some comments, the changes look good architecture-wise. Assuming you tested the code, I think this can be merged.
I didn't test or read the GUI code as it is not critical.

@Flova Flova merged commit 6d083c2 into main Mar 17, 2024
2 checks passed
@Flova Flova deleted the record_ui branch March 17, 2024 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Head mover dies Start headmover with default headmode
3 participants